package capaDominio;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.jdom.DocType;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

import capaDatos.BaseDatos;

/**
 * 
 */

/**
 * @author AJ
 *
 */
public class SP_XMLs {
    static String XML_errorConexion(int idError, String error) {
        Element mensaje = new Element("mensaje");
        Element errorConexion = new Element("errorConexion");

        errorConexion.setAttribute("id", ""+idError);
        errorConexion.setAttribute("mensaje", error);
        System.out.println(error);

        mensaje.addContent(errorConexion);
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}

    static String XML_resLogin(String usuario, String userStatus, String userIP, String secreto) {
        Element mensaje = new Element("mensaje");
        Element resLogin = new Element("resLogin");
        
        try {
	        ResultSet rs = BaseDatos.consultarContacto(usuario);
	        while(rs.next()) {
	            Element contacto = new Element("contacto");
	
	            contacto.setAttribute("username", rs.getString("contacto"));
	            resLogin.addContent(contacto);
	        }
	        rs.close();
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
        System.out.println(usuario+userIP+secreto);					// Si te da error de conexión activa esto en SP_XML
        System.out.println(utilsIO.getHash(usuario+userIP+secreto));   
        resLogin.setAttribute("token", utilsIO.getHash(usuario+userIP+secreto));
        resLogin.setAttribute("status", userStatus);

        mensaje.addContent(resLogin);
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}

	static String XML_resRegistro() {
		Element mensaje = new Element("mensaje");
        Element resRegistro = new Element("resRegistro");
        
        try {
        	resRegistro.setAttribute("resultado", "true");
	        mensaje.addContent(resRegistro);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}
	
	static String XML_resAddContacto() {
		Element mensaje = new Element("mensaje");
        Element resRegistro = new Element("resAdContacto");
        
        try {
        	resRegistro.setAttribute("resultado", "true");
	        mensaje.addContent(resRegistro);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}	
	
	static String XML_resOperacion() {
		Element mensaje = new Element("mensaje");
        Element resOp = new Element("resOperacion");
        
        try {
        	resOp.setAttribute("resultado", "true");
	        mensaje.addContent(resOp);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}	
	
	static String XML_resItinerario(String id) {
		Element mensaje = new Element("mensaje");
        Element res = new Element("resItinerario");
        
        try {
        	res.setAttribute("id", id);
	        mensaje.addContent(res);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}
	
	static String XML_resListarProductos(ResultSet in) {
		Element mensaje = new Element("mensaje");
        Element res = new Element("resListarProductos");
        try {
	        do {
			    System.out.println("SP_XMLs.XML_resListarProductos: Listando producto "+in.getString("id"));
			    	Element prod = new Element("Producto");
			    	prod.setAttribute("id", in.getString("id"));
			    	prod.setAttribute("precio", in.getString("precio"));
			    	prod.setAttribute("rating", in.getString("rating"));
			    	prod.setAttribute("cantidad", in.getString("cantidad"));
			        res.addContent(prod); 
	        } while (in.next());
	        in.close();
        } catch (Exception ex) {
	        System.out.println(ex.getMessage());
	    }
        mensaje.addContent(res);
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}
	
	static String XML_resListarCheckpoints(ResultSet in) {
		Element mensaje = new Element("mensaje");
        Element res = new Element("resListarCheckpoints");
        try {
	        do {
			    
			    	Element chk = new Element("Checkpoint");
			    	chk.setAttribute("fecha", in.getString("fecha"));
			    	chk.setAttribute("id", in.getString("id"));
			    	chk.setAttribute("foto", in.getString("foto"));
			    	chk.setAttribute("visitado", in.getString("visitado"));
			    	chk.setAttribute("posicion", in.getString("posicion"));
			        res.addContent(chk); 
	        } while (in.next());
        } catch (Exception ex) {
	        System.out.println(ex.getMessage());
	    }
        try {
			in.close();
		} catch (SQLException e) {
			System.out.println(e.getMessage());
		}
        mensaje.addContent(res);
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}
	
	static String XML_resListarContactos(ResultSet in) {
		Element mensaje = new Element("mensaje");
        Element res = new Element("resListarContactos");
        try {
	        do {
			    
			    	Element chk = new Element("Contacto");
			    	chk.setAttribute("contacto", in.getString("contacto"));
			        res.addContent(chk); 
	        } while (in.next());
        } catch (Exception ex) {
	        System.out.println(ex.getMessage());
	    }
        try {
			in.close();
		} catch (SQLException e) {
			System.out.println(e.getMessage());
		}
        mensaje.addContent(res);
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}
	
	static String XML_resPosicion(ResultSet in) {
		Element mensaje = new Element("mensaje");
        Element res = new Element("resPosicion");
        try {
		    	res.setAttribute("ciudad", in.getString("ciudad"));
		    	res.setAttribute("pais", in.getString("pais"));
        } catch (Exception ex) {
	        System.out.println(ex.getMessage());
	    }
        mensaje.addContent(res);
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}
	
	static String XML_resImage(String img) {
		Element mensaje = new Element("mensaje");
        Element res = new Element("resImage");
        
        try {
        	res.setAttribute("imageData", img);
	        mensaje.addContent(res);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        DocType dtd = new DocType("mensaje", "mensaje.dtd");
        Document document = new Document(mensaje, dtd);

        XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
        return outputter.outputString(document).replaceAll("\r\n","");
	}	
}

